
var mysql = require('./db.js');

module.exports = {

  //sql语句单条执行
  // sqlOne(res, sql_str,data, callback) {
  //   console.log(data instanceof Array ? data.length == 1 ? data[0] : data : data);
  //   mysql('', (sql) => {
  //     sql.query(sql_str, data instanceof Array ? data.length==1 ? data[0]:data :data,(error, results, fields) => {
  //       if (error) {
  //         res.onError(error);
  //       } else {
  //         callback(results);
  //       }
  //     });
  //     sql.end();
  //   })
  // },
  // 修改为promise对象的形式  消除回调地狱
  sqlOne(sql_str, data){
    return new Promise((resolve,reject)=>{
      data = data instanceof Array ? data.length == 1 ? data[0] : data : data
      console.log("--------------------------------");
      console.log("执行语句---", sql_str);
      console.log("传入数据---", data);
      console.log("--------------------------------");
      mysql('', (sql) => {
        sql.query(sql_str, data, (error, results, fields) => {
          if (error) {
            reject(error);
          } else {
            resolve(results);
          }
        });
        sql.end();
      })
    });
  },

  //sql语句批量执行
  sqlBatch(sql2,data) {
    return new Promise((resolve,reject)=>{
      data = data instanceof Array ? data.length == 1 ? data[0] : data : data
      let sql1 = `BEGIN;`;
      let sql_all = sql1 + sql2;
      console.log("--------------------------------");
      console.log("执行语句---", sql_all);
      console.log("传入数据---", data);
      console.log("--------------------------------");

      mysql('', (sql) => {
        sql.query(sql_all,data, (error, results, fields) => {
          if (error) {
            //事务回滚
            sql.query('ROLLBACK;', (error2, results2, fields2) => {
              if (error2) {
                reject(error2);
              } else {
                // console.log(results2);
                resolve(results2)
              }
              sql.end();
            });
          } else {
            //事务确认
            sql.query('COMMIT;', (error3, results3, fields3) => {
              if (error) {
                reject(error);
              } else {
                results.shift();
                resolve(results);
              }
              sql.end();
            });
          }
        });
      })
    })
  }
}